home *** CD-ROM | disk | FTP | other *** search
- /*
- * Key Map Editor ver 1.0
- * Update Display
- *
- * parameters: GadgetList - pointer to linked list of Gadgets to update
- * KeyMapNode - KeyMapNode pointer
- * Option - Update Options (TRUE = all keys, FALSE = 1 key)
- *
- * by: Tim Friest
- * on: January 2, 1989
- */
-
- #include "KME_Includes.h"
- #include "KME_Protos.h"
- #include "KME_Defs.h"
- #include "KME_Globals.h"
-
- extern char GetKeyVal(UBYTE, ULONG, int);
- extern int GetKeyStr(char *, UBYTE, UBYTE *, int);
- extern char GetKeyDead(UBYTE, UBYTE *, int, UBYTE *);
-
- extern struct Gadget CloseBracketGadget;
-
- void UpdateDisplay(Gadget, KeyMapNode, UpdateAll)
- struct Gadget *Gadget;
- struct KeyMapNode *KeyMapNode;
- int UpdateAll;
- {
- struct Gadget *Gad;
- USHORT KeyCode;
- struct KeyMap *KeyMap;
- struct HalfKeyMap *HalfKeyMap;
- int Capsable;
- static char buff[256];
- static struct IntuiText buffIText = {
- 1, 0, JAM1, 0, 0, NULL, buff, NULL
- };
- int len;
- UBYTE color;
- struct IntuiText *IntuiText;
- int GadWidth;
-
- KeyMap = &KeyMapNode->kn_KeyMap;
- Gad = Gadget;
- KeyCode = Gad->GadgetID;
- do {
- if (KeyCode < 0x40)
- HalfKeyMap = (struct HalfKeyMap *)KeyMap;
- else {
- HalfKeyMap = (struct HalfKeyMap *)&KeyMap->km_HiKeyMapTypes;
- KeyCode -= 0x40;
- }
- len = 0;
- color = 1;
- Capsable = HalfKeyMap->Capsable[(KeyCode/8)] & (1<<(KeyCode % 8));
- switch (HalfKeyMap->KeyMapTypes[KeyCode] & (KCF_DEAD|KCF_STRING|KCF_NOP)) {
- case KC_NOQUAL:
- buff[0] = GetKeyVal(
- HalfKeyMap->KeyMapTypes[KeyCode],
- HalfKeyMap->KeyMap[KeyCode],
- Capsable);
- buff[1] = '\x00';
- len = 2;
- break;
- case KCF_STRING:
- len = GetKeyStr(buff,
- HalfKeyMap->KeyMapTypes[KeyCode],
- (UBYTE *)HalfKeyMap->KeyMap[KeyCode],
- Capsable);
- break;
- case KCF_DEAD:
- buff[0] = GetKeyDead(
- HalfKeyMap->KeyMapTypes[KeyCode],
- (UBYTE *)HalfKeyMap->KeyMap[KeyCode],
- Capsable, &color);
- buff[1] = '\x00';
- len = 2;
- break;
- case KCF_NOP:
- default:
- len = 0;
- } /* switch */
- if (len > 0) {
- GadWidth = Gad->Width;
- if (Gad->Activation & BOOLEXTEND)
- GadWidth -= 22;
- while ((len > 0) && (IntuiTextLength(&buffIText) > GadWidth))
- buff[--len] = '\x00';
- if (Gad->GadgetText == NULL) {
- IntuiText = (struct IntuiText *)AllocMem(sizeof(struct IntuiText), MEMF_CLEAR);
- if (IntuiText != NULL) {
- IntuiText->IText = (UBYTE *)AllocMem(len, 0);
- IntuiText->FrontPen = 1;
- IntuiText->BackPen = 0;
- IntuiText->DrawMode = JAM2;
- }
- }
- else {
- IntuiText = Gad->GadgetText;
- if (IntuiText->IText == NULL)
- IntuiText->IText = (UBYTE *)AllocMem(len, 0);
- else
- if (strlen(IntuiText->IText) != len) {
- FreeMem(IntuiText->IText, strlen(IntuiText->IText)+1);
- IntuiText->IText = (UBYTE *)AllocMem(len, 0);
- }
- }
- if (IntuiText != NULL) {
- if (IntuiText->IText != NULL) {
- if (buff[0] != '\x00') {
- strcpy(IntuiText->IText, buff);
- IntuiText->FrontPen = color;
- IntuiText->BackPen = 0;
- }
- else {
- IntuiText->IText[0] = '@';
- IntuiText->IText[1] = '\x00';
- IntuiText->FrontPen = 0;
- IntuiText->BackPen = 1;
- }
- if (buff[0] == ' ')
- IntuiText->BackPen = 1;
- IntuiText->LeftEdge = (GadWidth - IntuiTextLength(IntuiText))/2;
- if (Gad->Activation & BOOLEXTEND)
- IntuiText->LeftEdge += 22;
- Gad->GadgetText = IntuiText;
- FlagResource(RF_GadgetText);
- }
- else {
- FreeMem(IntuiText, sizeof(struct IntuiText));
- Gad->GadgetText = NULL;
- }
- }
- }
- else
- if (Gad->GadgetText != NULL)
- if (Gad->GadgetText->IText != NULL) {
- FreeMem(Gad->GadgetText->IText, strlen(Gad->GadgetText->IText)+1);
- Gad->GadgetText->IText = NULL;
- }
- } while ((Gad = Gad->NextGadget) && ((KeyCode = Gad->GadgetID) < 0x60) && UpdateAll);
- if (CheckResource(RF_Window))
- if (UpdateAll)
- RefreshGList(GadgetList, KeyMapEdWindow, NULL, DefinableKeys);
- else {
- RefreshGList(Gadget, KeyMapEdWindow, NULL, 1);
- if (Gadget->GadgetType == BOOLGADGET) /* kludge to fix return key overwriting this gadget */
- RefreshGList(&CloseBracketGadget, KeyMapEdWindow, NULL, 1);
- }
- }
-
- /*
- * Get Key Value
- *
- * parameters: KeyType - Key Type Flags
- * KeyMap - Longword Key Map Value
- * KeyCapsable - Is key Caps Lockable
- * returns: Key Value
- */
- char GetKeyVal(KeyType, KeyMap, KeyCapsable)
- UBYTE KeyType;
- ULONG KeyMap;
- int KeyCapsable;
- {
- char KeyVal = '\x00';
- ULONG CurrentStatus;
-
- CurrentStatus = StatusFlags;
- if (CheckFlag(SF_CapsLock))
- if (KeyCapsable)
- CurrentStatus |= SF_Shift;
-
- switch(KeyType & KC_VANILLA) {
- case KC_NOQUAL:
- KeyVal = KeyMap & 0x000000FF;
- break;
- case KCF_SHIFT:
- if (!(CurrentStatus & SF_Shift))
- KeyVal = KeyMap & 0x000000FF;
- else
- KeyVal = ((KeyMap & 0x0000FF00)>>8);
- break;
- case KCF_ALT:
- if (!(CurrentStatus & SF_Alt))
- KeyVal = KeyMap & 0x000000FF;
- else
- KeyVal = ((KeyMap & 0x0000FF00)>>8);
- break;
- case KCF_CONTROL:
- if (!(CurrentStatus & SF_Control))
- KeyVal = KeyMap & 0x000000FF;
- else
- KeyVal = ((KeyMap & 0x0000FF00)>>8);
- break;
- case KCF_ALT|KCF_SHIFT:
- switch (CurrentStatus & (SF_Shift|SF_Alt)) {
- case 0: /* Shift and Alt are not pressed */
- KeyVal = KeyMap & 0x000000FF;
- break;
- case SF_Shift:
- KeyVal = ((KeyMap & 0x0000FF00)>>8);
- break;
- case SF_Alt:
- KeyVal = ((KeyMap & 0x00FF0000)>>16);
- break;
- case SF_Shift|SF_Alt:
- KeyVal = ((KeyMap & 0xFF000000)>>24);
- } /* switch */
- break;
- case KCF_CONTROL|KCF_SHIFT:
- switch (CurrentStatus & (SF_Shift|SF_Control)) {
- case 0: /* Shift and Control are not pressed */
- KeyVal = KeyMap & 0x000000FF;
- break;
- case SF_Shift:
- KeyVal = ((KeyMap & 0x0000FF00)>>8);
- break;
- case SF_Control:
- KeyVal = ((KeyMap & 0x00FF0000)>>16);
- break;
- case SF_Shift|SF_Control:
- KeyVal = ((KeyMap & 0xFF000000)>>24);
- } /* switch */
- break;
- case KCF_CONTROL|KCF_ALT:
- switch (CurrentStatus & (SF_Control|SF_Alt)) {
- case 0: /* Control and Alt are not pressed */
- KeyVal = KeyMap & 0x000000FF;
- break;
- case SF_Alt:
- KeyVal = ((KeyMap & 0x0000FF00)>>8);
- break;
- case SF_Control:
- KeyVal = ((KeyMap & 0x00FF0000)>>16);
- break;
- case SF_Alt|SF_Control:
- KeyVal = ((KeyMap & 0xFF000000)>>24);
- } /* switch */
- break;
- case KC_VANILLA:
- switch (CurrentStatus & (SF_Shift|SF_Alt)) {
- case 0: /* Shift and Alt are not pressed */
- KeyVal = KeyMap & 0x000000FF;
- break;
- case SF_Shift:
- KeyVal = ((KeyMap & 0x0000FF00)>>8);
- break;
- case SF_Alt:
- KeyVal = ((KeyMap & 0x00FF0000)>>16);
- break;
- case SF_Shift|SF_Alt:
- KeyVal = ((KeyMap & 0xFF000000)>>24);
- } /* switch */
- if (CurrentStatus & SF_Control)
- if ((KeyMap & 0x00000040) && (!((CurrentStatus & SF_Shift) && (KeyMap & 0x00000040))))
- KeyVal = KeyMap & 0x0000009F;
- else
- if (KeyMap & 0x00004000)
- KeyVal = ((KeyMap & 0x00009F00)>>8);
- } /* switch */
- return(KeyVal);
- }
-
- /*
- * Get Key String
- *
- * parameters: KeyStr - String to receive key's string
- * KeyType - Key Type Flags
- * KeyMap - Longword Key Map Value
- * KeyCapsable - Is key Caps Lockable
- * returns: String length
- */
- int GetKeyStr(KeyStr, KeyType, KeyMap, KeyCapsable)
- char *KeyStr;
- UBYTE KeyType;
- UBYTE *KeyMap;
- int KeyCapsable;
- {
- ULONG CurrentStatus;
- int len = 0;
-
- CurrentStatus = StatusFlags;
- if (CheckFlag(SF_CapsLock))
- if (KeyCapsable)
- CurrentStatus |= SF_Shift;
-
- switch(KeyType & KC_VANILLA) {
- case KC_NOQUAL:
- len = *KeyMap;
- memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
- break;
- case KCF_SHIFT:
- if (!(CurrentStatus & SF_Shift)) {
- len = *KeyMap;
- memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
- }
- else {
- len = *(KeyMap+2);
- memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
- }
- break;
- case KCF_ALT:
- if (!(CurrentStatus & SF_Alt)) {
- len = *KeyMap;
- memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
- }
- else {
- len = *(KeyMap+2);
- memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
- }
- break;
- case KCF_CONTROL:
- if (!(CurrentStatus & SF_Control)) {
- len = *KeyMap;
- memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
- }
- else {
- len = *(KeyMap+2);
- memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
- }
- break;
- case KCF_ALT|KCF_SHIFT:
- switch (CurrentStatus & (SF_Shift|SF_Alt)) {
- case 0: /* Shift and Alt are not pressed */
- len = *KeyMap;
- memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
- break;
- case SF_Shift:
- len = *(KeyMap+2);
- memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
- break;
- case SF_Alt:
- len = *(KeyMap+4);
- memcpy(KeyStr, (KeyMap + *(KeyMap+5)), len);
- break;
- case SF_Shift|SF_Alt:
- len = *(KeyMap+6);
- memcpy(KeyStr, (KeyMap + *(KeyMap+7)), len);
- } /* switch */
- break;
- case KCF_CONTROL|KCF_SHIFT:
- switch (CurrentStatus & (SF_Shift|SF_Control)) {
- case 0: /* Shift and Control are not pressed */
- len = *KeyMap;
- memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
- break;
- case SF_Shift:
- len = *(KeyMap+2);
- memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
- break;
- case SF_Control:
- len = *(KeyMap+4);
- memcpy(KeyStr, (KeyMap + *(KeyMap+5)), len);
- break;
- case SF_Shift|SF_Control:
- len = *(KeyMap+6);
- memcpy(KeyStr, (KeyMap + *(KeyMap+7)), len);
- } /* switch */
- break;
- case KCF_CONTROL|KCF_ALT:
- switch (CurrentStatus & (SF_Control|SF_Alt)) {
- case 0: /* Alt and Control are not pressed */
- len = *KeyMap;
- memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
- break;
- case SF_Alt:
- len = *(KeyMap+2);
- memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
- break;
- case SF_Control:
- len = *(KeyMap+4);
- memcpy(KeyStr, (KeyMap + *(KeyMap+5)), len);
- break;
- case SF_Alt|SF_Control:
- len = *(KeyMap+6);
- memcpy(KeyStr, (KeyMap + *(KeyMap+7)), len);
- } /* switch */
- break;
- case KC_VANILLA:
- switch (CurrentStatus & (SF_Shift|SF_Control|SF_Alt)) {
- case 0: /* Shift, Alt and Control are not pressed */
- len = *KeyMap;
- memcpy(KeyStr, (KeyMap + *(KeyMap+1)), len);
- break;
- case SF_Shift:
- len = *(KeyMap+2);
- memcpy(KeyStr, (KeyMap + *(KeyMap+3)), len);
- break;
- case SF_Alt:
- len = *(KeyMap+4);
- memcpy(KeyStr, (KeyMap + *(KeyMap+5)), len);
- break;
- case SF_Shift|SF_Alt:
- len = *(KeyMap+6);
- memcpy(KeyStr, (KeyMap + *(KeyMap+7)), len);
- break;
- case SF_Control:
- len = *(KeyMap+8);
- memcpy(KeyStr, (KeyMap + *(KeyMap+9)), len);
- break;
- case SF_Shift|SF_Control:
- len = *(KeyMap+10);
- memcpy(KeyStr, (KeyMap + *(KeyMap+11)), len);
- break;
- case SF_Control|SF_Alt:
- len = *(KeyMap+12);
- memcpy(KeyStr, (KeyMap + *(KeyMap+13)), len);
- break;
- case SF_Shift|SF_Control|SF_Alt:
- len = *(KeyMap+14);
- memcpy(KeyStr, (KeyMap + *(KeyMap+15)), len);
- } /* switch */
- } /* switch */
- if (len > 0)
- KeyStr[len++] = '\x00';
- return(len);
- }
-
- /*
- * Get Key Dead
- *
- * parameters: KeyType - Key Type Flags
- * KeyMap - Longword Key Map Value
- * KeyCapsable - Is key Caps Lockable
- * returns: Key Value
- */
- char GetKeyDead(KeyType, KeyMap, KeyCapsable, color)
- UBYTE KeyType;
- UBYTE *KeyMap;
- int KeyCapsable;
- UBYTE *color;
- {
- static char Accents[] = {
- '\xB4', '`', '^', '~', '\xA8'
- };
- ULONG CurrentStatus;
- char KeyVal = '\x00';
-
- CurrentStatus = StatusFlags;
- if (CheckFlag(SF_CapsLock))
- if (KeyCapsable)
- CurrentStatus |= SF_Shift;
-
- *color = 1;
- switch (KeyType & KC_VANILLA) {
- case KC_NOQUAL:
- switch (*KeyMap) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+1);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+1));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+1)-1];
- *color = 3;
- } /* switch */
- break;
- case KCF_SHIFT:
- if (!(CurrentStatus & SF_Shift))
- switch (*KeyMap) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+1);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+1));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+1)-1];
- *color = 3;
- } /* switch */
- else
- switch (*(KeyMap+2)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+3);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+3));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+3)-1];
- *color = 3;
- } /* switch */
- break;
- case KCF_ALT:
- if (!(CurrentStatus & SF_Alt))
- switch (*KeyMap) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+1);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+1));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+1)-1];
- *color = 3;
- } /* switch */
- else
- switch (*(KeyMap+2)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+3);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+3));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+3)-1];
- *color = 3;
- } /* switch */
- break;
- case KCF_CONTROL:
- if (!(CurrentStatus & SF_Control))
- switch (*KeyMap) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+1);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+1));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+1)-1];
- *color = 3;
- } /* switch */
- else
- switch (*(KeyMap+2)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+3);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+3));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+3)-1];
- *color = 3;
- } /* switch */
- break;
- case KCF_SHIFT|KCF_ALT:
- switch (CurrentStatus & (SF_Shift|SF_Alt)) {
- case 0: /* Shift and Alt not selected */
- switch (*KeyMap) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+1);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+1));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+1)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Shift:
- switch (*(KeyMap+2)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+3);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+3));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+3)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Alt:
- switch (*(KeyMap+4)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+5);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+5));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+5)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Shift|SF_Alt:
- switch (*(KeyMap+6)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+7);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+7));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+7)-1];
- *color = 3;
- } /* switch */
- } /* switch */
- break;
- case KCF_SHIFT|KCF_CONTROL:
- switch (CurrentStatus & (SF_Shift|SF_Control)) {
- case 0: /* Shift and Control not selected */
- switch (*KeyMap) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+1);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+1));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+1)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Shift:
- switch (*(KeyMap+2)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+3);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+3));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+3)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Control:
- switch (*(KeyMap+4)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+5);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+5));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+5)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Shift|SF_Control:
- switch (*(KeyMap+6)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+7);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+7));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+7)-1];
- *color = 3;
- } /* switch */
- } /* switch */
- break;
- case KCF_ALT|KCF_CONTROL:
- switch (CurrentStatus & (SF_Alt|SF_Control)) {
- case 0: /* Alt and Control not selected */
- switch (*KeyMap) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+1);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+1));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+1)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Alt:
- switch (*(KeyMap+2)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+3);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+3));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+3)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Control:
- switch (*(KeyMap+4)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+5);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+5));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+5)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Alt|SF_Control:
- switch (*(KeyMap+6)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+7);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+7));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+7)-1];
- *color = 3;
- } /* switch */
- } /* switch */
- break;
- case KC_VANILLA:
- switch (CurrentStatus & (SF_Shift|SF_Alt|SF_Control)) {
- case 0: /* Shift, Alt and Control not selected */
- switch (*KeyMap) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+1);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+1));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+1)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Shift:
- switch (*(KeyMap+2)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+3);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+3));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+3)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Alt:
- switch (*(KeyMap+4)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+5);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+5));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+5)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Shift|SF_Alt:
- switch (*(KeyMap+6)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+7);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+7));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+7)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Control:
- switch (*(KeyMap+8)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+9);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+9));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+9)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Shift|SF_Control:
- switch (*(KeyMap+10)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+11);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+11));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+11)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Alt|SF_Control:
- switch (*(KeyMap+12)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+13);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+13));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+13)-1];
- *color = 3;
- } /* switch */
- break;
- case SF_Shift|SF_Alt|SF_Control:
- switch (*(KeyMap+14)) {
- case KC_NOQUAL:
- KeyVal = *(KeyMap+15);
- break;
- case DPF_MOD:
- KeyVal = *(KeyMap + *(KeyMap+15));
- break;
- case DPF_DEAD:
- KeyVal = Accents[*(KeyMap+15)-1];
- *color = 3;
- } /* switch */
- } /* switch */
- } /* switch */
- return(KeyVal);
- }
-